home *** CD-ROM | disk | FTP | other *** search
/ Assassins - Ultimate CD Games Collection 4 / Assassins 4 (1999)(Weird Science).iso / misc / omega / source / movef.c < prev    next >
C/C++ Source or Header  |  1997-05-02  |  11KB  |  355 lines

  1. /* omega copyright (C) by Laurence Raphael Brothers, 1987,1988,1989 */
  2. /* movef.c */
  3. /* the movefunctions switch functions, for player and monster*/
  4.  
  5. #include "glob.h"
  6.  
  7.  
  8.  
  9. void p_movefunction(movef)
  10. int movef;
  11. {
  12.   /* loc functs above traps should be activated whether levitating or not */
  13.   drawvision(Player.x,Player.y);
  14.   sign_print(Player.x,Player.y,FALSE);
  15.   if (Player.status[SHADOWFORM])
  16.     switch(movef) {    /* player in shadow form is unable to do most things */
  17.       case L_CHAOS:l_chaos(); break;
  18.       case L_ABYSS:l_abyss(); break;
  19.       case L_ARENA_EXIT:l_arena_exit(); break;
  20.       case L_ENTER_COURT:l_enter_court(); break;
  21.       case L_ESCALATOR:l_escalator(); break;
  22.       case L_COLLEGE:l_college(); break;
  23.       case L_SORCERORS:l_sorcerors(); break;
  24.       case L_ALTAR:l_altar(); break;
  25.       case L_TACTICAL_EXIT:l_tactical_exit(); break;
  26.       case L_HOUSE_EXIT:l_house_exit(); break;
  27.       case L_HOUSE: l_house(); break;
  28.       case L_HOVEL: l_hovel(); break;
  29.       case L_MANSION: l_mansion(); break;
  30.       case L_COUNTRYSIDE:l_countryside(); break;
  31.       case L_ORACLE:l_oracle(); break;
  32.       case L_TEMPLE_WARNING:l_temple_warning(); break;
  33.       case L_ENTER_CIRCLE:l_enter_circle(); break;
  34.       case L_CIRCLE_LIBRARY:l_circle_library(); break;
  35.       case L_TOME1: l_tome1(); break;
  36.       case L_TOME2: l_tome2(); break;
  37.       case L_ADEPT:l_adept(); break;
  38.       case L_VOICE1:l_voice1();break;
  39.       case L_VOICE2:l_voice2();break;
  40.       case L_VOICE3:l_voice3();break;
  41.       case L_VOID:l_void();break;
  42.       case L_FIRE_STATION:l_fire_station();break;
  43.       case L_EARTH_STATION:l_earth_station();break;
  44.       case L_WATER_STATION:l_water_station();break;
  45.       case L_AIR_STATION:l_air_station();break;
  46.       case L_VOID_STATION:l_void_station();break;
  47.     }
  48.   else if ((! Player.status[LEVITATING]) || 
  49.       gamestatusp(MOUNTED) ||
  50.       (Cmd == '@') || /* @ command activates all effects under player */
  51.       (movef < LEVITATION_AVOIDANCE)) {
  52.  
  53.     switch(movef) {
  54.     /* miscellaneous */
  55.       case L_NO_OP:l_no_op(); break;
  56.       case L_HEDGE:l_hedge(); break;
  57.       case L_WATER:l_water(); break;
  58.       case L_LIFT:l_lift(); break;
  59.       case L_LAVA:l_lava(); break;
  60.       case L_FIRE:l_fire(); break;
  61.       case L_WHIRLWIND:l_whirlwind(); break;
  62.       case L_RUBBLE:l_rubble(); break;
  63.       case L_MAGIC_POOL:l_magic_pool(); break;
  64.       case L_CHAOS:l_chaos(); break;
  65.       case L_ABYSS:l_abyss(); break;
  66.     
  67.       case L_PORTCULLIS_TRAP:l_portcullis_trap(); break;
  68.       case L_RAISE_PORTCULLIS:l_raise_portcullis(); break;
  69.       case L_DROP_EVERY_PORTCULLIS:l_drop_every_portcullis(); break;
  70.       case L_ARENA_EXIT:l_arena_exit(); break;
  71.       case L_TRIFID:l_trifid(); break;
  72.       case L_ENTER_COURT:l_enter_court(); break;
  73.       case L_ESCALATOR:l_escalator(); break;
  74.       case L_THRONE:l_throne(); break;
  75.  
  76.       case L_TRAP_DART:l_trap_dart(); break;
  77.       case L_TRAP_SIREN:l_trap_siren(); break;
  78.       case L_TRAP_PIT:l_trap_pit(); break;
  79.       case L_TRAP_DOOR:l_trap_door(); break;
  80.       case L_TRAP_SNARE:l_trap_snare(); break;
  81.       case L_TRAP_BLADE:l_trap_blade(); break;
  82.       case L_TRAP_FIRE:l_trap_fire(); break;
  83.       case L_TRAP_TELEPORT:l_trap_teleport(); break;
  84.       case L_TRAP_DISINTEGRATE:l_trap_disintegrate(); break;
  85.       case L_TRAP_SLEEP_GAS:l_trap_sleepgas(); break;
  86.       case L_TRAP_MANADRAIN:l_trap_manadrain(); break;
  87.       case L_TRAP_ACID:l_trap_acid(); break;
  88.       case L_TRAP_ABYSS:l_trap_abyss(); break;
  89.  
  90.      /*door functions */
  91.       case L_BANK:l_bank(); break;
  92.       case L_ARMORER:l_armorer(); break;
  93.       case L_CLUB:l_club(); break;
  94.       case L_GYM:l_gym(); break;
  95.       case L_BROTHEL:l_brothel(); break;
  96.       case L_THIEVES_GUILD:l_thieves_guild(); break;
  97.       case L_COLLEGE:l_college(); break;
  98.       case L_HEALER:l_healer(); break;
  99.       case L_STATUE_WAKE:l_statue_wake(); break;
  100.       case L_CASINO:l_casino(); break;
  101.       case L_COMMANDANT:l_commandant(); break;
  102.       case L_DINER:l_diner(); break;
  103.       case L_CRAP:l_crap(); break;
  104.       case L_TAVERN:l_tavern(); break;
  105.       case L_MERC_GUILD:l_merc_guild(); break;
  106.       case L_ALCHEMIST:l_alchemist(); break;
  107.       case L_SORCERORS:l_sorcerors(); break;
  108.       case L_CASTLE:l_castle(); break;
  109.       case L_ARENA:l_arena(); break;
  110.       case L_VAULT:l_vault(); break;
  111.       case L_DPW:l_dpw(); break;
  112.       case L_LIBRARY:l_library(); break;
  113.       case L_PAWN_SHOP:l_pawn_shop(); break;
  114.       case L_CONDO:l_condo(); break;
  115.       case L_ALTAR:l_altar(); break;
  116.       case L_TACTICAL_EXIT:l_tactical_exit(); break;
  117.       case L_HOUSE_EXIT:l_house_exit(); break;
  118.       case L_SAFE: l_safe(); break;
  119.       case L_HOUSE: l_house(); break;
  120.       case L_HOVEL: l_hovel(); break;
  121.       case L_MANSION: l_mansion(); break;
  122.       case L_COUNTRYSIDE:l_countryside(); break;
  123.       case L_ORACLE:l_oracle(); break;
  124.       case L_ORDER:l_order(); break;
  125.       case L_CARTOGRAPHER:l_cartographer(); break;
  126.  
  127.       case L_TEMPLE_WARNING:l_temple_warning(); break;
  128.       case L_ENTER_CIRCLE:l_enter_circle(); break;
  129.       case L_CIRCLE_LIBRARY:l_circle_library(); break;
  130.       case L_TOME1: l_tome1(); break;
  131.       case L_TOME2: l_tome2(); break;
  132.  
  133.       case L_CHARITY: l_charity(); break;
  134.  
  135.       case L_CHAOSTONE:l_chaostone();break;
  136.       case L_VOIDSTONE:l_voidstone();break;
  137.       case L_BALANCESTONE:l_balancestone();break;
  138.       case L_LAWSTONE:l_lawstone();break;
  139.       case L_SACRIFICESTONE:l_sacrificestone(); break;
  140.       case L_MINDSTONE:l_mindstone(); break;
  141.  
  142.       /* challenge functions */
  143.       case L_ADEPT:l_adept(); break;
  144.       case L_VOICE1:l_voice1();break;
  145.       case L_VOICE2:l_voice2();break;
  146.       case L_VOICE3:l_voice3();break;
  147.       case L_VOID:l_void();break;
  148.       case L_FIRE_STATION:l_fire_station();break;
  149.       case L_EARTH_STATION:l_earth_station();break;
  150.       case L_WATER_STATION:l_water_station();break;
  151.       case L_AIR_STATION:l_air_station();break;
  152.       case L_VOID_STATION:l_void_station();break;
  153.     }
  154.     if (movef != L_NO_OP) {
  155.       resetgamestatus(FAST_MOVE);
  156.       dataprint();
  157.     }
  158.   }
  159. }
  160.  
  161.  
  162.  
  163.  
  164.  
  165. /* execute some move function for a monster */
  166. void m_movefunction(m,movef)
  167. struct monster *m;
  168. int movef;
  169. {
  170.   /* loc functs above traps should be activated whether levitating or not */
  171.   if (! m_statusp(m,FLYING) && ! m_statusp(m, INTANGIBLE))
  172.     switch(movef) {
  173.  
  174.     /* miscellaneous */
  175.     case L_NO_OP:m_no_op(m); break;
  176.     case L_WATER:m_water(m); break;
  177.     case L_LAVA:m_lava(m); break;
  178.     case L_FIRE:m_fire(m); break;
  179.     case L_MAGIC_POOL:m_water(m); break;
  180.     case L_ABYSS: m_abyss(m); break;
  181.  
  182.     case L_TRAP_DART:m_trap_dart(m); break;
  183.     case L_TRAP_PIT:m_trap_pit(m); break;
  184.     case L_TRAP_DOOR:m_trap_door(m); break;
  185.     case L_TRAP_SNARE:m_trap_snare(m); break;
  186.     case L_TRAP_BLADE:m_trap_blade(m); break;
  187.     case L_TRAP_FIRE:m_trap_fire(m); break;
  188.     case L_TRAP_TELEPORT:m_trap_teleport(m); break;
  189.     case L_TRAP_DISINTEGRATE:m_trap_disintegrate(m); break;
  190.     case L_TRAP_MANADRAIN:m_trap_manadrain(m); break;
  191.     case L_TRAP_SLEEP_GAS:m_trap_sleepgas(m); break;
  192.     case L_TRAP_ACID:m_trap_acid(m); break;
  193.     case L_TRAP_ABYSS:m_trap_abyss(m);break;
  194.  
  195.     case L_ALTAR:m_altar(m); break;
  196.     }
  197. }
  198.  
  199. #ifdef MSDOS
  200. /* ****Moved here from another file**** */
  201. /* if signp is true, always print message, otherwise do so only sometimes */
  202. void sign_print(x,y,signp)
  203. int x,y,signp;
  204. {
  205.   if ((Level->site[x][y].p_locf >= CITYSITEBASE) &&
  206.       (Level->site[x][y].p_locf < CITYSITEBASE+NUMCITYSITES))
  207.     CitySiteList[Level->site[x][y].p_locf - CITYSITEBASE][0] = TRUE;
  208.   switch(Level->site[x][y].p_locf) {
  209.   case L_CHARITY:
  210.     print1("You notice a sign: The Rampart Orphanage And Hospice For The Needy.");
  211.     break;
  212.   case L_MANSION:
  213.     print1("You notice a sign:");
  214.     print2("This edifice protected by DeathWatch Devices, Ltd.");
  215.     morewait();
  216.     break;
  217.   case L_GRANARY:  
  218.     print1("You notice a sign:");
  219.     print2("Public Granary: Entrance Strictly Forbidden.");
  220.     break;
  221.   case L_PORTCULLIS:
  222.     if (Level->site[x][y].locchar == FLOOR)
  223.       print1("You see a groove in the floor and slots above you.");
  224.     break;
  225.   case L_STABLES:
  226.     print1("You notice a sign:");
  227.     print2("Village Stables");
  228.     break;
  229.   case L_COMMONS:
  230.     print1("You notice a sign:");
  231.     print2("Village Commons: No wolves allowed.");
  232.     break;
  233.   case L_MAZE:
  234.     print1("You notice a sign:");
  235.     print2("Hedge maze closed for trifid extermination.");
  236.     break;
  237.   case L_BANK:
  238.     if (signp) {
  239.       print1("You notice a sign:");
  240.       print2("First Bank of Omega: Autoteller Carrel.");
  241.     }
  242.     break;
  243.   case L_TEMPLE:
  244.     print1("You see the ornate portico of the Rampart Pantheon");
  245.     break;
  246.   case L_ARMORER:
  247.     if (signp) {
  248.       print1("You notice a sign:");
  249.       print2("Julie's Armor of Proof and Weapons of Quality");
  250.     }
  251.     break;
  252.   case L_CLUB:
  253.     if (signp) {
  254.       print1("You notice a sign:");
  255.       print2("Rampart Explorers' Club.");
  256.     }
  257.     break;
  258.   case L_GYM:
  259.     if (signp) {
  260.       print1("You notice a sign:");
  261.       print2("The Rampart Gymnasium, (affil. Rampart Coliseum).");
  262.     }
  263.     break;
  264.   case L_HEALER:
  265.     if (signp) {
  266.       print1("You notice a sign:");
  267.       print2("Rampart Healers. Member RMA.");
  268.     }
  269.     break;
  270.   case L_CASINO:
  271.     if (signp) {
  272.       print1("You notice a sign:");
  273.       print2("Rampart Mithril Nugget Casino.");
  274.     }
  275.     break;
  276.   case L_SEWER:
  277.     print1("A sewer entrance. You don't want to go down THERE, do you?");
  278.     break;
  279.   case L_COMMANDANT:
  280.     if (signp) {
  281.       print1("You notice a sign:");
  282.       print2("Commandant Sonder's Rampart-fried Lyzzard partes. Open 24 hrs.");
  283.     }
  284.     break;
  285.   case L_DINER:
  286.     if (signp) {
  287.       print1("You notice a sign:");
  288.       print2("The Rampart Diner. All you can eat, 25Au.");
  289.     }
  290.     break;
  291.   case L_CRAP:
  292.     if (signp) {
  293.       print1("You notice a sign:"); 
  294.       print2("Les Crapeuleaux. (****)");
  295.     }
  296.     break;
  297.   case L_TAVERN:
  298.     if (signp) {
  299.       print1("You notice a sign:"); 
  300.       print2("The Centaur and Nymph -- J. Riley, prop.");
  301.     }
  302.     break;
  303.   case L_ALCHEMIST:
  304.     if (signp) {
  305.       print1("You notice a sign:"); 
  306.       print2("Ambrosias' Potions et cie.");
  307.     }
  308.     break;
  309.   case L_DPW:
  310.     if (signp) {
  311.       print1("You notice a sign:"); 
  312.       print2("Rampart Department of Public Works.");
  313.     }
  314.     break;
  315.   case L_LIBRARY:
  316.     if (signp) {
  317.       print1("You notice a sign:"); 
  318.       print2("Rampart Public Library.");
  319.     }
  320.     break;
  321.   case L_CONDO:
  322.     if (signp) {
  323.       print1("You notice a sign:"); 
  324.       if (gamestatusp(SOLD_CONDO)) 
  325.     print2("Home Sweet Home");
  326.       else print2("Luxury Condominium For Sale; Inquire Within");
  327.     }
  328.     break;
  329.   case L_PAWN_SHOP:
  330.     if (signp) {
  331.       print1("You notice a sign:"); 
  332.       print2("Knight's Pawn Shop.");
  333.     }
  334.     break;
  335.   case L_CEMETARY:
  336.     print1("You notice a sign:"); 
  337.     print2("Rampart City Cemetary. Closed -- Full.");
  338.     break;
  339.   case L_GARDEN:
  340.     print1("You notice a sign:"); 
  341.     print2("Rampart Botanical Gardens---Do not deface statues.");
  342.     break;
  343.   case L_JAIL:
  344.     print1("You notice a sign:"); 
  345.     print2("Rampart City Gaol -- always room for more.");
  346.     break;
  347.   case L_ORACLE:
  348.     print1("You notice a sign:");
  349.     print2("The Oracle of the Cyan Flames");
  350.     morewait();
  351.     break;
  352.   }
  353. }
  354. #endif
  355.